#include<bits/stdc++.h>
using namespace std;
const int N = 5e5+10;
bool vis[N];
int val[N];
int main(){
    int T;
    cin>>T;
    while(T--){
        int n,m,Q;
        cin>>n>>m>>Q;
        for(int j = 0;j < m;j++){
            val[j] = n - m + 1 + j;
        }
        vector<pair<int,int>> ps;
        for(int i = 2;i<=m;i++){ 
            if(!vis[i]){
                int cnt = 1;
                for(int j = 2;1ll*j*i <= m;j++){
                    int v = i*j;
                    vis[v] = 1;
                    while(v % i == 0){
                        cnt++;
                        v/=i;
                    }
                }  
                ps.push_back(make_pair(i,cnt));
            }
        }
        for(pair<int,int> p : ps){
            for(int j = (p.first - (n - m + 1)%p.first)%p.first;j < m;j += p.first){
                while(p.second && val[j]%p.first == 0){
                    val[j]/=p.first;
                    p.second--;
                }
                if(!p.second)break;
            }
        }
        int res = 1;
        for(int j = 0;j < m;j++){
            res = 1ll*res*val[j]%Q;
        }
        cout<<res<<'\n';
    }
}